namespace TaskProject.Extension.Plan
{
    /// <summary>
    /// 生产计划详情DTO
    /// </summary>
    public class ProductionPlanDetailDTO
    {
        /// <summary>
        /// 生产计划ID
        /// </summary>
        public int PlanId { get; set; }

        /// <summary>
        /// 计划主题
        /// </summary>
        public string PlanSubject { get; set; }

        /// <summary>
        /// 计划单号
        /// </summary>
        public string PlanOrderNumber { get; set; }

        /// <summary>
        /// 单据日期
        /// </summary>
        public DateTime? DocumentDate { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remarks { get; set; }

        /// <summary>
        /// 销售订单号
        /// </summary>
        public string? SalesOrderNumber { get; set; }

        /// <summary>
        /// 关联项目名称
        /// </summary>
        public string? RelatedProjectName { get; set; }

        /// <summary>
        /// 计划状态（0-草稿，1-已确认，2-执行中，3-已完成，4-已取消）
        /// </summary>
        public int PlanStatus { get; set; }

        /// <summary>
        /// 计划状态名称
        /// </summary>
        public string PlanStatusName { get; set; }

        /// <summary>
        /// 预计开始日期
        /// </summary>
        public DateTime? ExpectedStartDate { get; set; }

        /// <summary>
        /// 预计完成日期
        /// </summary>
        public DateTime? ExpectedEndDate { get; set; }

        /// <summary>
        /// 生产线
        /// </summary>
        public string? ProductionLine { get; set; }

        /// <summary>
        /// 优先级（1-低，2-中，3-高，4-紧急）
        /// </summary>
        public int Priority { get; set; }

        /// <summary>
        /// 优先级名称
        /// </summary>
        public string PriorityName { get; set; }

        /// <summary>
        /// 创建人
        /// </summary>
        public string? CreateName { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime? CreateDate { get; set; }

        /// <summary>
        /// 更新人
        /// </summary>
        public string UpdateName { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime UpdateDate { get; set; }

        /// <summary>
        /// 生产物品列表
        /// </summary>
        public List<ProductionPlanItemDTO> ProductionItems { get; set; } = new List<ProductionPlanItemDTO>();

        /// <summary>
        /// 附件列表
        /// </summary>
        public List<ProductionPlanAttachmentDTO> Attachments { get; set; } = new List<ProductionPlanAttachmentDTO>();
    }
} 